# coding=utf-8
# 防止中文乱码
import json
import random
import re
import hashlib


def isPhone(str):
  if re.match(r'1[3,4,5,7,8]\d{9}', str):
    # 中国联通：
    # 130，131，132，155，156，185，186，145，176
    if re.match(r'13[0,1,2]\d{8}', str) or \
            re.match(r"15[5,6]\d{8}", str) or \
            re.match(r"18[5,6]", str) or \
            re.match(r"145\d{8}", str) or \
            re.match(r"176\d{8}", str):
      return True
    # 中国移动
    # 134, 135 , 136, 137, 138, 139, 147, 150, 151,
    # 152, 157, 158, 159, 178, 182, 183, 184, 187, 188；
    elif re.match(r"13[4,5,6,7,8,9]\d{8}", str) or \
            re.match(r"147\d{8}|178\d{8}", str) or \
            re.match(r"15[0,1,2,7,8,9]\d{8}", str) or \
            re.match(r"18[2,3,4,7,8]\d{8}", str):
      return True
    else:
      # 中国电信
      # 133,153,189
      return True
  else:
    return False


def listNoneTokong(data):
  for item in data:
    if isinstance(item, dict):
      item = dictNoneTokong(item)
    elif isinstance(item, list):
      item = listNoneTokong(item)
    else:
      if not item or item == 'None':
        item = ''
  return data


def dictNoneTokong(data):
  for key in data:
    if isinstance(data[key], dict):  # 如果dic_json[key]依旧是字典类型
      data[key] = dictNoneTokong(data[key])
    elif isinstance(data[key], list):  # 如果dic_json[key]依旧是list类型
      data[key] = listNoneTokong(data[key])
    else:
      value = data[key]
      if not value or value == 'None':
        data[key] = ''
  return data


def jdataToString(jdata):
  jdata = dictNoneTokong(jdata)
  return json.dumps(jdata, ensure_ascii=False)


def str_encrypt(string1):
  sha = hashlib.sha1(string1)
  encrypts = sha.hexdigest()
  return encrypts

def getRandomStr(number):
  seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  sa = []
  for i in range(number):
    sa.append(random.choice(seed))
  salt = ''.join(sa)
  return salt
